<template>
  <div>
    <navigation-bar>
      <div class="searchContent">
        <custom-button type="search" style="margin-right: 10px" @searchClick="searchClick"></custom-button>
        <custom-button type="reset" style="margin-right: 10px" @resetClick="resetClick"></custom-button>
        <custom-button type="add" @addClick="addClick" style="margin-right: 10px"></custom-button>
        <custom-button type="add" title="同步" @addClick="synchronousClick"></custom-button>
      </div>
    </navigation-bar>
    <el-row>
      <el-col :span="6">
        <div style="width: 98%">
          <single-table :dataSource="leftDataSource" :tableColumns="leftTableColumns"
            @singleHandleSelectionChange="singleHandleSelectionChange"></single-table>
        </div>
      </el-col>
      <el-col :span="18">
        <table-index :dataSource="dataSource" :tableColumns="tableColumns" :btnList="btnList" :pageSize="pageSize"
          :pageCount="pageCount" :pageNo="pageNo" @pageChange="pageChange" @editRow="editRow" @viewRow="viewRow"
          @deleteRow="deleteRow"></table-index>
      </el-col>
    </el-row>
    <div v-if="dialogShow">
      <custom-dialog :title="dialogTitle" size="large" @dialogClose="dialogClose">
        <form-index :formConfig="formConfig" @submit="submit" :type="type">
          <!--  <div>这里还可以插入其它内容进行拓展</div> -->
        </form-index>
      </custom-dialog>
    </div>

    <div v-if="periodDialogShow">
      <custom-dialog title="同步周期数据" size="small" @dialogClose="periodDialogClose">
        <period-no-select stage="Ing" cfgType="CollectTimePoint"
          @periodSelectClose="periodDialogClose"></period-no-select>
      </custom-dialog>
    </div>
  </div>
</template>

<script>
import { SamplingTimePointFormConfig } from "@/assets/form/managementCenter/testConfiguration/testPeriodConfiguration/samplingTimePointForm"
import customDialog from "@/components/customComponents/customDialog"
import customButton from "@/components/customComponents/customForm/customButton"
import formIndex from "@/components/customComponents/customForm/formIndex"
import singleTable from "@/components/customComponents/customeTable/singleTable"
import tableIndex from "@/components/customComponents/customeTable/tableIndex"
import navigationBar from "@/components/customComponents/managementCenter/navigationBar"
import { AjaxCommon } from "@/libs/apiCommon"
import { PopupCommon } from "@/libs/popupCommon"
import { SessionCommon } from "@/libs/sessionCommon"
import periodNoSelect from "@/components/customComponents/periodNoSelect";

export default {
  components: {
    navigationBar,
    customButton,
    tableIndex,
    singleTable,
    customDialog,
    formIndex,
    periodNoSelect
  },
  data() {
    return {
      periodDialogShow: false,
      selectData: [],
      collectCondition: "",
      leftSelectIds: [],
      leftDataSource: [],
      leftTableColumns: [
        {
          prop: "typeName",
          label: "试验样品名称",
          twoColumns: ["typeName", "testIndex"],
        },
      ],
      drugNo: "",
      // table 相关参数  begin
      dataSource: [],
      tableColumns: [
        {
          prop: "periodNo",
          label: "周期号",
        },
        {
          prop: "sort",
          label: "顺序号",
        },
        {
          prop: "drugNo",
          label: "基于给药序号",
          width: 140,
        },
        {
          prop: "baseDrugTime",
          label: "基于给药时间",
          width: 120,
          dictName: "base_time",
        },
        {
          prop: "timePoint",
          label: "时间点",
        },
        {
          prop: "oppositeDay",
          label: "相对天数",
        },
        {
          prop: "oppositeTime",
          label: "相对时间",
        },
        {
          prop: "ttwSizeof",
          label: "时间窗运算符",
          width: 120,
        },
        {
          prop: "ttwValue",
          label: "时间窗值",
        },
        {
          prop: "ttwUnit",
          label: "时间窗单位",
          width: 100,
          dictName: "ttw_unit",
        },
        {
          prop: "remarks",
          label: "样品采集点描述",
          width: 140,
        },
        {
          prop: "correctPlan",
          label: "是否矫正计划时间",
          width: 160,
        },
        {
          prop: "collectCondition",
          label: "采样条件",
        },
      ],
      btnList: ["edit", "view", "delete"],
      pageSize: 20,
      pageCount: 100,
      pageNo: 1,
      // table 相关参数  end

      // 弹窗是否显示
      dialogShow: false,
      // 弹窗标题 (新增修改不同)
      dialogTitle: "",

      // form的配置信息
      formConfig: null,
      type: "add",
      drugNoList: [],
    }
  },
  methods: {
    periodDialogClose() {
      this.periodDialogShow = false
    },
    synchronousClick() {
      this.periodDialogShow = true
    },
    submit(d) {
      let self = this
      d.correctPlan = d.correctPlan ? 1 : 0
      if (d.id) {
        AjaxCommon("/ccdc/cfg/exp/ing/expIngCollectTimePoint/edit", "post", d)
          .then((res) => {
            if (res.data.code == 200) {
              PopupCommon.notify("success", "操作成功")
              self.initPage()
              self.dialogClose()
            } else {
              PopupCommon.notify("error", res.data.message)
            }
          })
          .catch((err) => {
            PopupCommon.notify("error", err.message)
          })
      } else {
        delete d.id
        d.sampleType = this.selectData.length > 0 ? this.selectData[0].type : ""
        d.testIndex = this.selectData.length > 0 ? this.selectData[0].testIndex : ""
        d.collectCondition = this.selectData.length > 0 ? this.selectData[0].collectionCondition : ""
        d.sampleId = this.selectData.length > 0 ? this.selectData[0].id : ""
        AjaxCommon("/ccdc/cfg/exp/ing/expIngCollectTimePoint/add", "post", d)
          .then((res) => {
            if (res.data.code == 200) {
              PopupCommon.notify("success", "操作成功")
              self.initPage()
              self.dialogClose()
            } else {
              PopupCommon.notify("error", res.data.message)
            }
          })
          .catch((err) => {
            PopupCommon.notify("error", err.message)
          })
      }
    },
    dialogClose() {
      this.dialogShow = false
    },
    searchClick() {
      this.pageNo = 1
      this.initPage()
    },
    resetClick() {
    },
    addClick() {
      if (this.leftSelectIds.length != 1) {
        PopupCommon.notify("info", "请勾选一个样品")
        return
      }
      let formConfigItem = this.formConfig
      formConfigItem.map((t) => {
        Object.keys(t).map((res) => {
          if (res == "fieldName") {
            t.filedValue = ""
          }
        })
      })
      // formConfigItem.expId = this.leftSelectIds[0].id
      this.formConfig = formConfigItem

      this.type = "add"
      this.dialogShow = true
      this.dialogTitle =
        "新增" + JSON.parse(SessionCommon.getCurrentMenuInfo()).title
    },
    // 分页点击事件
    pageChange(p) {
      this.pageNo = p
      this.initPage()
    },
    editRow(d) {
      this.type = "edit"
      let formConfigItem = this.formConfig
      formConfigItem.map((t) => {
        Object.keys(t).map((res) => {
          if (res == "fieldName") {
            t.filedValue = d.data[t[res]]
          }
        })
      })

      formConfigItem.correctPlan = d.correctPlan == 1

      this.formConfig = formConfigItem
      this.dialogShow = true
      this.dialogTitle =
        "编辑" + JSON.parse(SessionCommon.getCurrentMenuInfo()).title
    },
    viewRow(d) {
      this.type = "look"
      let formConfigItem = this.formConfig
      formConfigItem.map((t) => {
        Object.keys(t).map((res) => {
          if (res == "fieldName") {
            t.filedValue = d.data[t[res]]
          }
        })
      })
      this.formConfig = formConfigItem
      this.dialogShow = true
      this.dialogTitle =
        "查看" + JSON.parse(SessionCommon.getCurrentMenuInfo()).title
    },
    deleteRow(d) {
      const id = d.data.id
      let self = this
      AjaxCommon(
        "/ccdc/cfg/exp/ing/expIngCollectTimePoint/delete?id=" + id,
        "delete", { optReason: d.optReason }
      ).then((res) => {
        console.log(res, "res...............")
        if (res.data.code == 200) {
          PopupCommon.notify("success", "删除成功")
          self.initPage()
          self.dialogClose()
        } else {
          PopupCommon.notify("error", res.data.message)
        }
      })
    },
    // 左侧选中事件
    singleHandleSelectionChange(d) {
      console.log(d,"-------------");
      this.selectData = d
      this.leftSelectIds = d ? d.map((t) => t.id) : []
      this.initPage()
    },
    // 初始化事件
    initPage() {
      let self = this
      AjaxCommon(
        "/ccdc/cfg/exp/ing/expIngCollectTimePoint/listByPage",
        "post",
        {
          sampleIdList: self.leftSelectIds,
          pageNo: this.pageNo,
          pageSize: this.pageSize,
        }
      ).then((res) => {
        if (res.data.code == 200) {
          self.dataSource = res.data.result.records
          self.pageCount = res.data.result.total
        } else {
          PopupCommon.notify("error", res.data.message)
        }
      })
    },
    initLeftData() {
      AjaxCommon("/ccdc/cfg/exp/root/expSample/pointOrSelectList", "post", { "pointOrSelect": "select" }).then(
        (res) => {
          if (res.data.code == 200) {
            this.leftDataSource = res.data.result
          } else {
            this.leftDataSource = []
            PopupCommon.notify("error", res.data.message)
          }
        }
      )
    },
    // 初始化事件
    initSelect() {
      AjaxCommon("/ccdc/businessSelect/drugTime", "post", {}).then((res) => {
        if (res.data.code == 200) {
          this.formConfig = SamplingTimePointFormConfig(res.data.result)
        } else {
          PopupCommon.notify("error", res.data.message)
        }
      })
    },
  },
  mounted() {
    this.initLeftData()
    this.initPage()
    this.initSelect()
  },
}
</script>

<style></style>
